/** @file c_sorts.h
 *  @brief Funciones de sorting
 */

#ifndef C_SORTS_H_
#define C_SORTS_H_

/**
 * @brief Realiza un bubble sort in place
 * @param words Lista de lista de palabras tipo C a ser ordenada in place
 * @param arraysiz Longitud de la lista de lista de palabras
 */
void bubblesort (char ** words, int arraysiz);

/**
 * @brief Realiza un shell sort in place
 * @details Para determinar los gaps utiliza la secuencia de Knuth:
 * @details G(n) = 3 x G(n-1) + 1
 * @details G(n-1) = G(n)/3
 * @param words Lista de lista de palabras tipo C a ser ordenada in place
 * @param arraysiz Longitud de la lista de lista de palabras
 */
void shellsort (char ** words, int arraysiz);

/**
 * @brief Realiza un insertion sort in place en un subarray equiespaciado
 * @param words Lista de lista de palabras tipo C de la cual se ordenara un subarray
 * @param arraysiz Longitud de la lista de lista de palabras
 * @param inicio A partir de cual elemento contar el subarray
 * @param gap Distancia entre elementos para obtener el subarray
 */
void insertionsortParcial(char** words, int arraysiz, int inicio, int gap);

#endif /* C_SORTS_H_ */
